import 'dart:io';

main() {
  // 回调地狱，不推荐
  // getRequest().then((res) {
  //   print('第一次执行函数' + (res + 1).toString());
  //   getRequest().then((res) {
  //     print('第二次执行函数' + (res + 2).toString());
  //     getRequest().then((res) {
  //       print('第三次执行函数' + (res + 3).toString());
  //     });
  //   });
  // });

  // 链式回调
  getRequest().then((res) {
    print('第一次执行函数' + (res + 1).toString());
    return getRequest2();
  }).then((res) {
    print('第二次执行函数' + (res + 2).toString());
    return getRequest3();
  }).then((res) {
    print('第三次执行函数' + (res + 3).toString());
  })
  // 链式调用，结构更加清晰，而且能统一捕获错误
  .catchError((error) {
    print(error);
  });
  print('其他业务逻辑');

}

Future<int> getRequest() {
  return Future(() {
    sleep(Duration(seconds: 3));
    return 0;
  });
}

Future<int> getRequest2() {
  return Future(() {
    sleep(Duration(seconds: 3));
    return 0;
  });
}

Future<int> getRequest3() {
  return Future(() {
    sleep(Duration(seconds: 3));
    return 0;
  });
}
